﻿using System;

namespace Viyi.Util
{
    static partial class DateTimeUtil
    {
        /// <summary>
        /// 计算从1970年1月1日到指定日期的毫秒数数，与 Java 中 <c>java.util.Date.getTime()</c> 返回的值相同。
        /// </summary>
        /// <param name="value"></param>
        /// <param name="timezone"></param>
        /// <returns></returns>
        public static long ToJavaMilliseconds(this DateTime value, TimeZoneInfo timezone = null)
        {
            var date1970 = TimeZoneInfo.ConvertTimeFromUtc(StartTimeInJava,
                timezone ?? TimeZoneInfo.Local);
            return (value.Ticks - date1970.Ticks) / 10000;
        }

        /// <summary>
        /// 根据 Java 中表示时间和 <c>long</c> 型数据，恢复成 <see cref="DateTime" /> 类型数据。
        /// </summary>
        /// <param name="value"></param>
        /// <param name="timezone"></param>
        /// <returns></returns>
        public static DateTime FromJavaMilliseconds(long value, TimeZoneInfo timezone = null)
        {
            var date1970 = TimeZoneInfo.ConvertTimeFromUtc(StartTimeInJava,
                timezone ?? TimeZoneInfo.Local);
            return new DateTime(date1970.Ticks + value * 10000);
        }
    }
}
